package cn.enjoyedu.nettybasic.serializable.protogenesis;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.nio.ByteBuffer;

/**
 * @author Mark老师   享学课堂 https://enjoy.ke.qq.com
 * 往期课程和VIP课程咨询 依娜老师  QQ：2133576719
 * 类说明：测试序列化性能差异
 */
public class PerformTestUserInfo {

    public static void main(String[] args) throws IOException {
	UserInfo info = new UserInfo();
	info.buildUserID(100).buildUserName("Welcome to Netty");
	int loop = 1000000;
	ByteArrayOutputStream bos = null;
	ObjectOutputStream os = null;
	long startTime = System.currentTimeMillis();
	for (int i = 0; i < loop; i++) {
	    bos = new ByteArrayOutputStream();
	    os = new ObjectOutputStream(bos);
	    os.writeObject(info);
	    os.flush();
	    os.close();
	    byte[] b = bos.toByteArray();
	    bos.close();
	}
	long endTime = System.currentTimeMillis();
	System.out.println("The jdk serializable cost time is  : "
		+ (endTime - startTime) + " ms");

	System.out.println("-------------------------------------");

	ByteBuffer buffer = ByteBuffer.allocate(1024);
	startTime = System.currentTimeMillis();
	for (int i = 0; i < loop; i++) {
	    byte[] b = info.codeC(buffer);
	}
	endTime = System.currentTimeMillis();
	System.out.println("The byte array serializable cost time is : "
		+ (endTime - startTime) + " ms");

    }

}
